home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / t3_1 / encorsrc.lha / encore_sources / link / syscheck.t < prev    next >
Text File  |  1988-05-02  |  2KB  |  43 lines

  1. (herald syscheck)
  2.             
  3. (define (syscheck files ext)
  4.     (cond ((compile-noise-files (map ->filename files) ext)
  5.            => (lambda (free)
  6.                 (pp `(unresolved ,free))
  7.                 *repl-wont-print*))
  8.           (else
  9.            'all-variables-resolved)))
  10.  
  11. (define (compile-noise-files files ext)
  12.   (iterate loop ((files files) (def bootstrap-symbols) (free '()))
  13.     (cond ((null? files)
  14.            (iterate loop ((files free) (res '()))
  15.              (cond ((null? files) res)
  16.                    (else
  17.                     (let ((free (setdiff (cadar files) def)))
  18.                       (if free
  19.                           (loop (cdr files) `((,(caar files) ,free) . ,res))
  20.                           (loop (cdr files) res)))))))
  21.           (else
  22.            (let ((vars 
  23.                (with-open-streams ((noi (open (filename-with-type (car files) ext)
  24.                                              '(in))))
  25.                   (format t "~s~%" (filename-name (car files)))
  26.                   (read noi))))
  27.                (loop (cdr files)
  28.                      (union def (union (nth vars 6) (nth vars 8)))
  29.                      `((,(filename-name (car files))
  30.                         ,(union (nth vars 2) (nth vars 4)))
  31.                        . ,free)))))))
  32.  
  33.  
  34. (define-constant BOOTSTRAP-SYMBOLS 
  35.   '(*boot-env* *the-initial-symbols* *the-slink* *the-initial-modules*
  36.     *pure-initial-mem-begin* *pure-initial-mem-end* *impure-initial-mem-begin*               
  37.     *impure-initial-mem-end* *code-unit-map* *the-environment*)) 
  38.  
  39.  
  40.  
  41.  
  42.  
  43.